home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / dev / lang / pcq12b.lzh / Include / Exec / Tasks.i < prev   
Text File  |  1990-08-27  |  3KB  |  118 lines

  1. {
  2.     Tasks.i for PCQ Pascal
  3.  
  4.     Every Amiga Task has one of these Task structures associated with it.
  5.     To find yours, use FindTask(Nil).  AmigaDOS processes tack a few more
  6.     values on to the end of this structure, which is the difference between
  7.     Tasks and Processes.
  8. }
  9.  
  10. {$I "Include:exec/nodes.i"}
  11. {$I "Include:exec/lists.i"}
  12.  
  13. type
  14.   
  15.     Task = record
  16.     tc_Node        : Node;
  17.     tc_Flags    : Byte;
  18.     tc_State    : Byte;
  19.     tc_IDNestCnt    : Byte;        { intr disabled nesting        }
  20.     tc_TDNestCnt    : Byte;        { task disabled nesting        }
  21.     tc_SigAlloc    : Integer;    { sigs allocated        }
  22.     tc_SigWait    : Integer;    { sigs we are waiting for    }
  23.     tc_SigRecvd    : Integer;    { sigs we have received        }
  24.     tc_SigExcept    : Integer;    { sigs we will take excepts for    }
  25.     tc_TrapAlloc    : Short;    { traps allocated        }
  26.     tc_TrapAble    : Short;    { traps enabled            }
  27.     tc_ExceptData    : Address;    { points to except data        }
  28.     tc_ExceptCode    : Address;    { points to except code        }
  29.     tc_TrapData    : Address;    { points to trap code        }
  30.     tc_TrapCode    : Address;    { points to trap data        }
  31.     tc_SPReg    : Address;    { stack pointer            }
  32.     tc_SPLower    : Address;    { stack lower bound        }
  33.     tc_SPUpper    : Address;    { stack upper bound + 2        }
  34.     tc_Switch    : Address;    { task losing CPU        }
  35.     tc_Launch    : Address;    { task getting CPU        }
  36.     tc_MemEntry    : List;        { allocated memory         }
  37.     tc_UserData    : Address;    { per task data            }
  38.     end;
  39.     TaskPtr = ^Task;
  40.  
  41. {----- Flag Bits ------------------------------------------}
  42.  
  43. const
  44.     TB_PROCTIME        = 0;
  45.     TB_STACKCHK        = 4;
  46.     TB_EXCEPT        = 5;
  47.     TB_SWITCH        = 6;
  48.     TB_LAUNCH        = 7;
  49.  
  50.     TF_PROCTIME        = 1;
  51.     TF_STACKCHK        = 16;
  52.     TF_EXCEPT        = 32;
  53.     TF_SWITCH        = 64;
  54.     TF_LAUNCH        = 128;
  55.  
  56. {----- Task States ----------------------------------------}
  57.  
  58.     TS_INVALID        = 0;
  59.     TS_ADDED        = 1;
  60.     TS_RUN        = 2;
  61.     TS_READY        = 3;
  62.     TS_WAIT        = 4;
  63.     TS_EXCEPT        = 5;
  64.     TS_REMOVED        = 6;
  65.  
  66. {----- Predefined Signals -------------------------------------}
  67.  
  68.     SIGB_ABORT        = 0;
  69.     SIGB_CHILD        = 1;
  70.     SIGB_BLIT        = 4;
  71.     SIGB_SINGLE        = 4;
  72.     SIGB_DOS        = 8;
  73.  
  74.     SIGF_ABORT        = 1;
  75.     SIGF_CHILD        = 2;
  76.     SIGF_BLIT        = 16;
  77.     SIGF_SINGLE        = 16;
  78.     SIGF_DOS        = 256;
  79.  
  80.  
  81.  
  82. Procedure AddTask(task : TaskPtr; initialPC, finalPC : Address);
  83.     External;
  84.  
  85. Function AllocSignal(signalNum : Integer) : Integer;
  86.     External;
  87.  
  88. Function AllocTrap(trapNum : Integer) : Integer;
  89.     External;
  90.  
  91. Function FindTask(name : String) : TaskPtr;
  92.     External;
  93.  
  94. Procedure FreeSignal(signalNum : Integer);
  95.     External;
  96.  
  97. Procedure FreeTrap(signalNum : Integer);
  98.     External;
  99.  
  100. Procedure RemTask(task : TaskPtr);
  101.     External;
  102.  
  103. Function SetExcept(newSignals, signalMask : Integer) : Integer;
  104.     External;
  105.  
  106. Function SetSignal(newSignals, signalMask : Integer) : Integer;
  107.     External;
  108.  
  109. Function SetTaskPri(task : TaskPtr; priority : Integer) : Integer;
  110.     External;
  111.  
  112. Procedure Signal(task : TaskPtr; signals : Integer);
  113.     External;
  114.  
  115. Function Wait(signals : Integer) : Integer;
  116.     External;
  117.  
  118.